import utils from '@/common/utils';

/**
 * 枚举类
 */
export class Enum {
    /**
     * 添加枚举字段
     * field: 枚举字段
     * label: 显示值
     * value: 枚举值
     * tag：样式类
     */
    add(field, label, value, tag) {
        this[field] = { key: field, label, value, tag };
        return this;
    }

    /**
     * 根据枚举value获取其label值
     */
    getLabelByValue(value) {
        // 字段不存在返回 value
        if (utils.isEmpty(value)) return '';
        for (const i in this) {
            const e = this[i];
            if (e && e.value === value) { return e.label; }
        }
        return value;
    }
    /**
     * 根据枚举value获取其label值，不存在则返回Empty
     */
    getLabelOrEmptyByValue(value) {
        // 字段不存在返回 value
        if (utils.isEmpty(value)) return '';
        for (const i in this) {
            const e = this[i];
            if (e && e.value === value) { return e.label; }
        }
        return '';
    }
    /**
     * 根据枚举key获取其label值
     */
    getLabelByKey(key) {
        // 字段不存在返回 filed
        if (utils.isEmpty(key)) return '';
        for (const i in this) {
            if (i === key) {
                const e = this[i];
                return e.label;
            }
        }
        return key;
    }
    /**
     * 获取枚举对象数组
     */
    getObjArray() {
        const retArr = [];
        for (const i in this) { retArr.push(this[i]); }
        return retArr;
    }
}